package cc.comac.saic.hkhy.jsrj.gj.inttools.parser.impl;


import java.util.Objects;

import cc.comac.saic.hkhy.jsrj.gj.inttools.constant.FileType;
import cc.comac.saic.hkhy.jsrj.gj.inttools.parser.DataParser;
import cc.comac.saic.hkhy.jsrj.gj.inttools.parser.ParseException;
import cc.comac.saic.hkhy.jsrj.gj.inttools.parser.ParseResult;
import com.alibaba.fastjson2.JSONObject;

import static cc.comac.saic.hkhy.jsrj.gj.inttools.constant.Constants.INT_TOOL_DATA_ID;

/**
 * 北航数据
 * 对应
 * hlr-model、archi-model
 *
 * @author shisongyan
 * @since 2025/11/18
 */
public class ArchiModelDataParser implements DataParser {
    @Override
    public boolean supports(String data) {
        try {
            JSONObject parse = JSONObject.parse(data);
            String reqModelId = parse.getString("req_model_id");
            return Objects.nonNull(reqModelId);
        } catch (Exception e) {
            return false;
        }
    }

    @Override
    public ParseResult parse(String data) throws ParseException {
        ParseResult result = new ParseResult(getParserType());

        try {
            JSONObject parse = JSONObject.parse(data);
            String reqModelId = parse.getString("req_model_id");

            // 提取特定字段
            if (Objects.nonNull(reqModelId)) {
                result.addField(INT_TOOL_DATA_ID, reqModelId);
            }


        } catch (Exception e) {
            result.setSuccess(false);
            result.setErrorMessage("JSON解析失败: " + e.getMessage());
            throw new ParseException("JSON解析错误", e);
        }

        return result;
    }

    @Override
    public String getParserType() {
        return FileType.ARCHI_MODEL.getCode();
    }
}
